package com.jingyanzi.member.service;

import com.jingyanzi.member.domain.CustomerDO;
import com.jingyanzi.member.domain.CustomerMergeDO;
import com.jingyanzi.member.domain.result.ResultDO;
import com.jingyanzi.member.query.CustomerQueryDO;

/**
 * 客户信息管理 <b>Description:客户信息、客户合并等管理</b><br>
 * 
 * @author Reading.Reagan</a>
 * @version 1.0
 * @Note <b>ProjectName:</b> member-api <br>
 *       <b>PackageName:</b> com.jingyanzi.member.service <br>
 *       <b>ClassName:</b> ICustomerService <br>
 *       <b>Date:</b> 2018年7月13日 下午1:14:19
 */
public interface ICustomerService {

	/**
	 * 新增客户 <b>Description:新增客户，同时添加首要联系人、客户地址、客户账户、客户标签等基本信息</b><br>
	 * 
	 * @param domain
	 *            客户DO对象
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年7月13日 下午1:15:19 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO add(CustomerDO domain);

	/**
	 * 删除客户 <b>Description:新增客户，同时添加首要联系人、客户地址、客户账户、客户标签等基本信息</b><br>
	 * 
	 * @param domain
	 *            客户DO对象
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年7月13日 下午1:15:19 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO remove(Integer[] ids);
	
	
	public ResultDO remove(Integer id);

	/**
	 * 修改客户信息 <b>Description:</b><br>
	 * 
	 * @param domain
	 *            客户DO对象
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年7月13日 下午2:07:29 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO modifi(CustomerDO domain);

	/**
	 * 查询客户详情 <b>Description:客户及联系人、账户等关联信息查询</b><br>
	 * 
	 * @param id
	 *            客户id
	 * @return ResultDO CustomerDO 客户DO对象
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年7月13日 下午2:09:53 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO get(Integer id);

	

	/**
	 * 获取客户列表 <b>Description:获取有效客户列表，可分页查询</b><br>
	 * 
	 * @param query
	 * @return ResultDO List<CustomerDO>
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年7月13日 下午2:11:53 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO query(CustomerQueryDO query);

	

}
